const $i18n = getApp().globalData.i18n;
// console.log(getApp().globalData.i18n);

var validate = {
	reg: {
		backspace: /\s/,
		/** @description 不能是单纯的空白字符*/
		backspace_: /^\s+$/,
		mobilephone: /^(13|14|15|17|18|19)[0-9]{9}$/,
		fullWidthAlphabetNumber_: /^[\u4e00-\u9fa5-_a-zA-Z0-9—]+$/,
		configfullWidthAlphabetNumber_: /^[-_a-zA-Z0-9]+$/, //字符串可包含 - _
		userId_: /^[\u4e00-\u9fa5-_a-zA-Z0-9]+$/, //账户ID 中文  数字 字母  - _
		allFullWidthAlphabetNumber_: /^[\u4e00-\u9fa5a-zA-Z0-9]|[^\x00-\xff]|[\(\)\.]+$/,
		allInFullWidthAlphabetNumber_: /[\u4e00-\u9fa5a-zA-Z0-9]|[^\x00-\xff]|[\^!#@%&',;=?\$\.]+/,
		alphabetNumber_: /^[-_a-zA-Z0-9]+$/,
		creditphabetNumber_: /^[A-Z0-9]+$/,
		phonephabetNumber_: /^(\d{11}[0-9])|([-0-9])+$/, //电话号码
		nationalphabetNumber_: /^[\u4e00-\u9fa5]+$/,
		sitephabetNumber_: /^[0-9]|[\.]+$/,
		floatNumber: /^(0|([1-9]\d*))(\.\d+)?$/, // 含浮点数的数字
		floatNumber_2: /^(0|([1-9]\d*))(\.[0-9]{1,2})?$/, // 含浮点数的数字 (小数位限2位)
		floatNumber_6: /^(0|([1-9]\d*))(\.[0-9]{1,6})?$/, // 含浮点数的数字 (小数位限6位)
		floatNumberNeg: /^(\-?(0|([1-9]\d*)))(\.\d+)?$/, // 含负数的浮点数的数字
		jfalphabetNumber_: /^[-a-zA-Z0-9]+$/,
		idcardalphabetNumber_: /(^\d{18}$)|(^\d{17}(x|X)$)/,
		indexs_: /^[\d,]+$/,
		url_: /^((https|http|)?:\/\/)[^\s]+/,
		chinese: /[^\u4E00-\u9FA5]/,
		name: /^[\u4E00-\u9FA5\uf900-\ufa2d·a-zA-Z]{2,20}$/, //验证姓名正则
		idx: /(^[1-9]\d$)|(^\d{1}$)/,
		time: /^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/,
		mobilePhone_: /^1[3456789]\d{9}$/, //手机号码
		password: /^[-_a-zA-Z0-9]+$/,
		special: /^.*[¿|?|?|!|¡|!|!|！|#|@||$|\\].*$/,
		special1: new RegExp("[`~!@#$^&*()=|{}':;'\\[\\].<>《》/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？]"),
		special2: new RegExp("[#']"),
		integer: /^(0|\+?[1-9][0-9]*)$/, //  /^(0|\+?[1-9][0-9]*)$/
		port: /^[0-9]+$/,
		ip: /^(?:(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:1[0-9][0-9]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:2[0-4][0-9])|(?:25[0-5])|(?:1[0-9][0-9])|(?:[1-9][0-9])|(?:[0-9]))$/,
		email: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/,
	},
	// 常规
	common: function(rule, value, callback) {
		if (!value) {
			return callback('不可为空');
		} else if (value.length > 128) {
			return callback('最大长度 128 个字符');
		} else if (special2.test(value)) {
			return callback('输入不可包含特殊字符');
		} else {
			callback()
		}
	},
	floatNumber: function(rule, value, callback) {
		if (value.length === 0) {
			return callback('不可为空');
		} else if (!validate.reg.floatNumber.test(value)) {
			return callback('请输入数字');
		} else {
			callback()
		}
	},
	temperature: function(rule, value, callback) {
		if (value.length === 0) {
			return callback('不可为空');
		} else if (!validate.reg.floatNumberNeg.test(value)) {
			return callback('请输入数字');
		} else {
			callback()
		}
	},
	// 百分数
	precentage: function(rule, value, callback) {
		if (value.length === 0) {
			return callback('不可为空');
		} else if (!validate.reg.floatNumber.test(value)) {
			return callback('请输入数字');
		} else if (parseFloat(value) > 100 || parseFloat(value) < 0) {
			return callback('请输入正确的数值');
		} else {
			callback();
		}
	},
	// 验证puid  只包含数字字母
	puid: function(rule, value, callback) {
		if (value && value.length > 128) {
			return callback($i18n.t('global.validate.maxLength64'));
		} else if (validate.reg.backspace.test(value)) {
			return callback($i18n.t('global.validate.backspace'));
		} else if (!validate.reg.configfullWidthAlphabetNumber_.test(value)) {
			return callback($i18n.t('global.validate.num_word__'));
		} else {
			callback();
		}
	},
	// 验证idx  只包含数字字母
	idx: function(rule, value, callback) {
		if (validate.reg.backspace.test(value)) {
			return callback($i18n.t('global.validate.backspace'));
		} else if (!validate.reg.idx.test(value)) {
			return callback($i18n.t('global.validate.idx'));
		} else {
			callback();
		}
	},
	// 名称去重
	notRepeat: function(rule, value, callback, data) {
		// console.log('验证执行了',data,data.some(el=>el===value))
		if (data.some(el => el === value)) {
			return callback('名称重复!')
		} else {
			callback()
		}
	},
	// 特殊符号校验
	special1: function(rule, value, callback) {
		if (validate.reg.special1.test(value)) {
			return callback($i18n.t('global.validate.special1'))
		} else {
			callback()
		}
	},
	special2: function(rule, value, callback) {
		if (validate.reg.special2.test(value)) {
			return callback($i18n.t('global.validate.special2'))
		} else {
			callback()
		}
	},
	// 验证账户ID
	user_id: function(rule, value, callback, cb) {
		if (validate.reg.backspace.test(value)) {
			return callback($i18n.t('global.validate.backspace'));
		} else if (value && value.length > 32) {
			return callback($i18n.t("global.validate.maxLength32"));
		} else if (!validate.reg.userId_.test(value)) {
			return callback($i18n.t('global.validate.user_id'))
		} else {
			if (cb != undefined) {
				callback();
			} else {
				callback();
			}
		}
	},
	// 验证身份证
	idcard: function(rule, value, callback) {
		if (!validate.reg.idcardalphabetNumber_.test(value)) {
			return callback('格式不正确 ');
		} else {
			callback();
		}
	},
	// 验证名称
	name: function(rule, value, callback) {
		if (value.length) {
			if (validate.reg.backspace.test(value)) {
				return callback($i18n.t('global.validate.backspace'));
			} else if (validate.reg.special2.test(value)) {
				return callback($i18n.t('global.validate.special2'));
			} else if (value && value.length > 32) {
				return callback($i18n.t("global.validate.maxLength32"));
			} else if (!validate.reg.name.test(value)) {
				return callback($i18n.t('global.validate.name'));
			} else {
				callback();
			}
		} else {
			callback();
		}

	},
	// 名称通用
	common_name: function(rule, value, data, callback) {
		if (value.length) {
			if (validate.reg.backspace.test(value)) {
				return callback($i18n.t('global.validate.backspace'));
			} else if (validate.reg.special2.test(value)) {
				return callback($i18n.t('global.validate.special2'));
			} else if (value && value.length > 32) {
				return callback($i18n.t('global.validate.maxLength32'));
			} else if (!validate.reg.userId_.test(value)) {
				return callback($i18n.t('global.validate.common_name'));
			} else {
				callback();
			}
		} else {
			callback();
		}

	},
	// 小数通用(小数点后两位)
	common_float_2: function(rule, value, data, callback) {
		if (value != null && value.length > 0) {
			if (!validate.reg.floatNumber.test(value)) {
				return callback($i18n.t('global.validate.number_float'));
			} else if (!validate.reg.floatNumber_2.test(value)) {
				return callback($i18n.t('global.validate.floatNumber_2'));
			} else {
				callback();
			}
		} else {
			callback();
		}
	},
	// 文本通用
	common_text: function(rule, value, data, callback) {
		if (value.length) {
			if (validate.reg.backspace.test(value)) {
				return callback($i18n.t('global.validate.backspace'));
			} else if (validate.reg.special2.test(value)) {
				return callback($i18n.t('global.validate.special2'));
			} else if (value && value.length > 128) {
				return callback($i18n.t('global.validate.maxLength128'));
			} else {
				callback();
			}
		} else {
			callback();
		}

	},
	name1: function(rule, value, callback) {
		if (name.test(value)) {
			return callback('请输入正确的姓名');
		} else {
			callback();
		}
	},
	// 不能包含空格
	no_space: function(rule, value, callback) {
		if (validate.reg.backspace.test(value)) {
			return callback('不能包含空格');
		} else {
			callback();
		}
	},
	// 验证手机号码
	mobilephone1: function(rule, value, callback) {
		if (value.length === 0) {
			return callback('不可为空');
		} else if (validate.reg.backspace.test(value)) {
			return callback('不能包含空格');
		} else if (!validate.reg.mobilePhone_.test(value)) {
			return callback('请输入正确手机号');
		} else {
			callback();
		}
	},
	// 验证手机号码
	mobilephone: function(rule, value, callback) {
		if (backspace.test(value)) {
			return callback('不能包含空格');
		} else if (value.length > 0 && !validate.reg.mobilePhone_.test(value)) {
			return callback('请输入正确手机号');
		} else {
			callback();
		}
	},
	// 通用号码
	phone: function(rule, value, callback) {
		if (value) {
			if (validate.reg.backspace.test(value)) {
				return callback('不能包含空格');
			} else if (!validate.reg.phonephabetNumber_.test(value)) {
				return callback('格式不正确');
			} else {
				callback();
			}
		} else {
			callback();
		}
	},
	// 验证url
	url: function(rule, value, callback) {
		if (!validate.reg.url_.test(value)) {
			return callback('格式不正确');
		} else if (validate.reg.backspace.test(value)) {
			return callback('不能包含空格');
		} else {
			callback();
		}
	},
	password: function(rule, value, callback) {
		if (value && value.length > 64) {
			return callback($i18n.t("global.validate.maxLength64"));
		} else if (!validate.reg.password.test(value)) {
			return callback($i18n.t("global.validate.num_word_"));
		} else {
			callback();
		}
	},
	// 网闸校验
	gap: function(rule, value, callback) {
		console.log('网闸校验', value);
		if (value.length === 0) {
			return callback('不可为空');
		} else if (value != '0' && value != '1') {
			return callback('格式不正确');
		} else {
			callback();
		}
	},
	// 主机地址
	host: function(rule, value, callback) {
		if (value.length === 0) {
			return callback('不可为空');
		} else if (value === 'localhost') {
			callback();
		} else if (!validate.reg.ip.test(value)) {
			return callback('请填写有效的ip地址');
		} else {
			callback();
		}
	},
	// 验证端口
	port: function(rule, value, callback) {
		if (value.length === 0) {
			return callback('不可为空');
			// return callback();
		} else if (!validate.reg.port.test(value)) {
			return callback('只能输入数字');
		} else if (value < 0 || value > 65535) {
			return callback('端口不正确');
		} else {
			callback();
		}
	},
	// 正整数
	integer: function(rule, value, callback) {
		if (validate.reg.backspace.test(value)) {
			return callback('不能包含空格!');
		} else if (!validate.reg.integer.test(value)) {
			return callback('请输入正整数!')
		} else {
			callback()
		}
	},
	email: function(rule, value, callback) {
		if (value.length && !validate.reg.email.test(value)) {
			return callback('请输入正确的邮箱');
		} else {
			callback();
		}
	},
	// 经度
	longitude: function(rule, value, callback) {
		if (value != null && value.length > 0) {
			if (!validate.reg.floatNumber.test(value)) {
				return callback($i18n.t('global.validate.number_float'));
			} else if (parseFloat(value) > 180 || parseFloat(value) < 0) {
				return callback($i18n.t('global.validate.longitude'));
			} else if (!validate.reg.floatNumber_6.test(value)) {
				return callback($i18n.t('global.validate.floatNumber_6'));
			} else {
				callback();
			}
		} else {
			callback();
		}
	},
	// 纬度
	latitude: function(rule, value, callback) {
		if (value != null && value.length > 0) {
			if (!validate.reg.floatNumber.test(value)) {
				return callback($i18n.t('global.validate.number_float'));
			} else if (parseFloat(value) > 90 || parseFloat(value) < 0) {
				return callback($i18n.t('global.validate.latitude'));
			} else if (!validate.reg.floatNumber_6.test(value)) {
				return callback($i18n.t('global.validate.floatNumber_6'));
			} else {
				callback();
			}
		} else {
			callback();
		}
	},
	// 倾斜角度
	tilt: function(rule, value, callback) {
		if (!floatNumber.test(value)) {
			return callback('请输入数字!');
		} else if (parseFloat(value) > 90 || parseFloat(value) < 0) {
			return callback('请输入正确的倾斜角度!');
		} else {
			callback();
		}
	},
}

export default validate;